package com.snail.model.pojo.media;

import com.baomidou.mybatisplus.annotation.*;

import java.time.LocalDateTime;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 文件主表（图片、文档、视频通用）
 * @TableName biz_files
 */
@TableName(value ="biz_files")
@Data
public class BizFiles {
    /**
     * 文件ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 上传用户ID（关联users）
     */
    private Long userId;

    /**
     * 原始文件名
     */
    private String fileName;

    /**
     * 桶
     */
    private String bucket;
    /**
     * 文件类型（0:视频1:图片2:文档）
     */
    private Integer fileType;

    /**
     * 文件大小（字节）
     */
    private Long fileSize;

    /**
     * 存储路径（如OSS地址、服务器路径）
     */
    private String storagePath;

    /**
     * 预览地址（如图片/文档在线预览链接）
     */
    private String previewUrl;

    /**
     * 文件得md5值
     */
    private String fileMd5;

    /**
     * 状态：1-分片上传中 2-合并中 3-已完成 4-失败
     */
    private Integer status;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;


    /**
     * 删除标记
     */
    @TableLogic
    private Integer deleted;
}